package com.service.infoEntry.dto;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.service.infoEntry.vo.UserVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@Data
public class ExportProgrammeInfoDto {
    /**
     * 项目编号:年月日XXX(如2021080901) 序号
     */@ApiModelProperty("项目编号:年月日XXX(如2021080901) 序号")
    @ExcelProperty("项目编号")
    private String num;
    /**
     * 合同号
     */@ApiModelProperty("合同号")
    @ExcelProperty("合同号")
    private String contractNo;
    @ExcelProperty("团队名称")
    private String teamName;
    /**
     * 账号
     */
    @ExcelProperty("账号")
    private String username;
    /**
     * 项目名称
     */@ApiModelProperty("项目名称")
    @ExcelProperty("项目名称")
    private String name;
    /**
     * 服务类型：网络云服务（含老云管理）安全云服务 混合类（网络+安全+其他）
     */
    @ApiModelProperty("服务类型：网络云服务（含老云管理）安全云服务 混合类（网络+安全+其他）")
    @ExcelProperty("服务类型")
    private String serviceType;
    /**
     * 项目类型：新项目，新项目+存量项目，MSP-新项目，MSP-存量项目，MSP-新项目+存量项目
     */@ApiModelProperty("项目类型：新项目，新项目+存量项目，MSP-新项目，MSP-存量项目，MSP-新项目+存量项目")@ExcelProperty("项目类型")
    private String programmeType;
    /**
     * 创建者id
     */
    @ApiModelProperty("创建者")
    @ExcelProperty("创建者")
    private UserVo userVo;
    /**
     * 团队id
     */
    @ApiModelProperty("团队id")
    @ExcelProperty("团队id")
    @ExcelIgnore
    private String teamId;
    /**
     * 项目描述
     */@ApiModelProperty("项目描述")@ExcelProperty("项目描述")
    @ExcelIgnore
    private String description;
    /**
     * 行业
     */@ApiModelProperty("行业")@ExcelProperty("行业")
    private String business;
    /**
     * L3行业
     */@ApiModelProperty("L3行业")@ExcelProperty("L3行业")
    private String industryLevelThree;
    /**
     * 代表处（新增）
     */
    @ApiModelProperty("代表处（新增）")
    @ExcelProperty("代表处")
    private String repOffice;
    /**
     * 区域
     */
    @ApiModelProperty("区域")
    @ExcelProperty("区域")
    private String region;
    /**
     * 立项时间
     */
    @ApiModelProperty("立项时间")
    @ExcelIgnore
    private Date addTime;
    /**
     * 录入时间（自动生成）
     */@ApiModelProperty("录入时间（自动生成）")@ExcelProperty("录入时间")
    private Date insertDate;
    /**
     * 项目状态修改后：0--启动 1--POC试用 2--形成PO 3--交付验收 4--形成收入 5--持续运维 1-1--挂起（11试用未转商用）1-2--丢标（12异常关闭）
     * :0-启动;1-下单;2-交付;3-运维;4-关闭
     */
    @ApiModelProperty("项目状态修改后：0--启动 1--POC试用 2--形成PO 3--交付验收 4--形成收入 5--持续运维 1-1--挂起（11试用未转商用）1-2--丢标（12异常关闭） ")
    @ExcelIgnore
    private Integer status;
    /**
     * 项目把握度：0% 10% 25% 50% 75% 100%
     */@ExcelProperty("项目把握度")@ApiModelProperty("项目把握度：0% 10% 25% 50% 75% 100%")
    private String proPower;
    /**
     * 项目背景（包括友商信息）
     */@ExcelProperty("项目背景")@ApiModelProperty("项目背景（包括友商信息）")
    private String proBack;
    /**
     * 项目规模（设备型号+数量）
     */@ApiModelProperty("项目规模（设备型号+数量）")@ExcelProperty("项目规模")
    private String scale;
    /**
     * 跟踪状态 1--进行中 2--关闭 3--挂起
     */@ApiModelProperty("跟踪状态 1--进行中 2--关闭 3--挂起")
    @ExcelIgnore
    private String trackStatus;
    /**
     * 是否top项目：1--true 0--false（新增）
     */@ApiModelProperty("是否top项目：1--true 0--false（新增）")
    @ExcelIgnore
    private Boolean isTop;

    @ExcelProperty("是否top项目")
     private String isTopStr;
    /**
     * 预计试用台数
     */@ApiModelProperty("预计试用台数")@ExcelProperty("预计试用台数")
    private Integer expTrialCount;
    /**
     * 已TRY台数
     */@ApiModelProperty("已TRY台数")@ExcelProperty("已TRY台数")
    private Integer tryCount;
    /**
     * 已BUY台数
     */@ApiModelProperty("已BUY台数")@ExcelProperty("已BUY台数")
    private Integer buyCount;
    /**
     * 预计商用台数
     */@ApiModelProperty("预计商用台数")@ExcelProperty("预计商用台数")
    private Integer expCommercialCount;
    /**
     * 预估下单时间
     */@ApiModelProperty("预估下单时间")@ExcelProperty("预估下单时间")
    private Date expOrderTime;
    /**
     * 实际下单时间
     */@ApiModelProperty("实际下单时间")@ExcelProperty("实际下单时间")
    private Date actualOrderTime;
    /**
     * 项目进展
     */@ApiModelProperty("项目进展")@ExcelProperty("项目进展")
    private String process;
    /**
     * 困难和风险
     */@ApiModelProperty("困难和风险")@ExcelProperty("困难和风险")
    private String difficultiesOrRisk;
    /**
     * 一线客户经理
     */@ApiModelProperty("一线客户经理")@ExcelProperty("一线客户经理")
    private String lineCusManage;
    /**
     * 一线商业经理
     */@ApiModelProperty("一线商业经理")@ExcelProperty("一线商业经理")
    private String lineBusinessManage;
    /**
     * 一线行业代表
     */@ApiModelProperty("一线行业代表")@ExcelProperty("一线行业代表")
    private String lineIndustryRep;
    /**
     * 产品经理
     */@ApiModelProperty("产品经理")@ExcelProperty("产品经理")
    private String lineProductManage;
    /**
     * 运营责任人（新增）
     */@ApiModelProperty("运营责任人")@ExcelProperty("运营责任人")
    private String operationPerson;
    /**
     * 是否私密:true-1-公开;false-0-私密
     */@ApiModelProperty("是否私密:true-1-公开;false-0-私密")
    @ExcelIgnore
    private String programmeStatus;
    /**
     * 项目关闭原因
     */@ApiModelProperty("项目关闭原因")@ExcelProperty("项目关闭原因")
    private String closeReason;
    /**
     * 刷新时间
     */@ApiModelProperty("刷新时间")@ExcelProperty("刷新时间")
    private Date updateTime;
    /**
     * 项目关闭时间
     */@ApiModelProperty("项目关闭时间")@ExcelProperty("项目关闭时间")
    private Date closeTime;
    /**
     * 客户联系人-姓名
     */@ApiModelProperty("客户联系人-姓名")@ExcelProperty("客户联系人-姓名")
    private String cusContactsName;
    /**
     * 客户联系人-电话
     */@ApiModelProperty("客户联系人-电话")@ExcelProperty("客户联系人-电话")
    private String cusContactsTel;
    /**
     * 客户联系人-邮箱
     */@ApiModelProperty("客户联系人-邮箱")@ExcelProperty("客户联系人-邮箱")
    private String cusContactsEmail;
    /**
     * 问题举措
     */@ApiModelProperty("问题举措")
    @ExcelIgnore
    private String problemInitiatives;
    /**
     * MSP(销-硬件)名称
     */@ApiModelProperty("MSP(销-硬件)名称")@ExcelProperty("MSP(销-硬件)名称")
    private String mspPinHwName;
    /**
     * MSP(销-硬件)联系人-姓名
     */@ApiModelProperty("MSP(销-硬件)联系人-姓名")@ExcelProperty("MSP(销-硬件)联系人-姓名")
    private String mspPinHwConName;
    /**
     * MSP(销-硬件)-联系人-电话
     */@ApiModelProperty("MSP(销-硬件)-联系人-电话")@ExcelProperty("MSP(销-硬件)-联系人-电话")
    private String mspPinHwConTel;
    /**
     * MSP(销-硬件)-联系人-邮箱
     */@ApiModelProperty("MSP(销-硬件)-联系人-邮箱")@ExcelProperty("MSP(销-硬件)-联系人-邮箱")
    private String mspPinHwConEmail;
    /**
     * MSP(服-硬件)名称
     */@ApiModelProperty("MSP(服-硬件)名称")@ExcelProperty("MSP(服-硬件)名称")
    private String mspSerHwName;
    /**
     * MSP(服-硬件)-联系人-邮箱
     */@ApiModelProperty("MSP(服-硬件)-联系人-邮箱")@ExcelProperty("MSP(服-硬件)-联系人-邮箱")
    private String mspSerHwConEmail;
    /**
     * MSP(服-硬件)-联系人-电话
     */@ApiModelProperty("MSP(服-硬件)-联系人-电话")@ExcelProperty("MSP(服-硬件)-联系人-电话")
    private String mspSerHwConTel;
    /**
     * MSP(服-硬件)联系人-姓名
     */@ApiModelProperty("MSP(服-硬件)联系人-姓名")@ExcelProperty("MSP(服-硬件)联系人-姓名")
    private String mspSerHwConName;
    /**
     * MSP(销-云服务)名称
     */@ApiModelProperty("MSP(销-云服务)名称")@ExcelProperty("MSP(销-云服务)名称")
    private String mspPinCloudName;
    /**
     * MSP(销-云服务)联系人-姓名
     */@ApiModelProperty("MSP(销-云服务)联系人-姓名")@ExcelProperty("MSP(销-云服务)联系人-姓名")
    private String mspPinCloudConName;
    /**
     * MSP(销-云服务)联系人-电话
     */@ApiModelProperty("MSP(销-云服务)联系人-电话")@ExcelProperty("MSP(销-云服务)联系人-电话")
    private String mspPinCloudConTel;
    /**
     * MSP(销-云服务)联系人-邮箱
     */@ApiModelProperty("MSP(销-云服务)联系人-邮箱")@ExcelProperty("MSP(销-云服务)联系人-邮箱")
    private String mspPinCloudConEmail;
    /**
     * MSP(服-云服务)-名称
     */@ApiModelProperty("MSP(服-云服务)-名称")@ExcelProperty("MSP(服-云服务)-名称")
    private String mspSerCloudName;
    /**
     * MSP(服-云服务)联系人-电话
     */@ApiModelProperty("MSP(服-云服务)联系人-电话")@ExcelProperty("MSP(服-云服务)联系人-电话")
    private String mspSerCloudConTel;
    /**
     * MSP(服-云服务)联系人-姓名
     */@ApiModelProperty("MSP(服-云服务)联系人-姓名")@ExcelProperty("MSP(服-云服务)联系人-姓名")
    private String mspSerCloudConName;
    /**
     * MSP(服-云服务)联系人-邮箱
     */@ApiModelProperty("MSP(服-云服务)联系人-邮箱")@ExcelProperty("MSP(服-云服务)联系人-邮箱")
    private String mspSerCloudConEmail;
    /**
     * 客户名称
     */@ApiModelProperty("客户名称")@ExcelProperty("客户名称")
    private String cusName;
    /**
     * 客户公司名称
     */@ApiModelProperty("客户公司名称")@ExcelProperty("客户公司名称")
    private String cusCpName;
    /**
     * 客户公司地点
     */@ApiModelProperty("客户公司地点")@ExcelProperty("客户公司地点")
    private String cusCpPlace;
    /**
     * 客户信息来源@ExcelProperty()
     */@ApiModelProperty("客户信息来源")@ExcelProperty("客户信息来源")
    private String cusInfoSource;
    /**
     * 客户线索获取日期
     */@ApiModelProperty("客户线索获取日期")@ExcelProperty("客户线索获取日期")
    private Date cusClueSourceDate;
    /**
     * 客户标签
     */@ApiModelProperty("客户标签")@ExcelProperty("客户标签")
    private String cusLabel;
    /**
     * 客户注册时间
     */@ApiModelProperty("客户注册时间")@ExcelProperty("客户注册时间")
    private Date cusRegisterTime;
    /**
     * 客户乾坤云账号
     */@ApiModelProperty("客户乾坤云账号")@ExcelProperty("客户乾坤云账号")
    private String cusTenantAccount;
    /**
     * 客户优先级标签
     */@ApiModelProperty("客户优先级标签")@ExcelProperty("客户优先级标签")
    private String cusPriLabel;
    /**
     * 客户价值标签
     */@ApiModelProperty("客户价值标签")@ExcelProperty("客户价值标签")
    private String cusValueLabel;
    /**
     * 客户需求
     */@ApiModelProperty("客户需求")@ExcelProperty("客户需求")
    private String cusDemand;
    /**
     * 客户预算
     */@ApiModelProperty("客户预算")@ExcelProperty("客户预算")
    private String cusBudget;
    /**
     * 客户上次联系时间
     */@ApiModelProperty("客户上次联系时间")@ExcelProperty()
    private Date cusLastContactTime;
    /**
     * 客户互动备注
     */@ApiModelProperty("客户互动备注")@ExcelProperty("客户互动备注")
    private String cusRemarks;;
    @ExcelProperty("项目状态")
    private String statusStr;
    @ExcelProperty("项目是否公开")
    private String programmeStatusStr;

    @ExcelProperty("跟踪状态")
    private String trackStatusStr;
    // 1-1--挂起（试用未转商用）1-2--丢标（异常关闭）
    public String getStatusStr() {
        if(null != status)
        {
            switch (status)
            {
                case 0:
                    statusStr = "启动";
                    break;
                case 1:
                    statusStr = "POC试用";
                    break;
                case 2:
                    statusStr = "形成PO";
                    break;
                case 3:
                    statusStr = "交付验收";
                    break;
                case 4:
                    statusStr = "形成收入";
                    break;
                case 5:
                    statusStr = "持续运维";
                    break;
                case 11:
                    statusStr = "挂起";
                    break;
                case 12:
                    statusStr = "丢标";
                    break;
                default:
                    break;
            }
        }
        return statusStr;
    }

    public String getProgrammeStatusStr() {
        if(null != programmeStatus && !"".equals(programmeStatus))
        {
            switch (programmeStatus)
            {
                case "0":
                    programmeStatusStr = "私密";
                    break;
                case "1":
                    programmeStatusStr = "公开";
                    break;
                default:
                    break;
            }
        }
        return programmeStatusStr;
    }


    /**
     * 1--进行中 2--关闭 3--挂起
     * @return
     */
    public String getTrackStatusStr(){
        if(trackStatus != null &&!"".equals(trackStatus))
        {
            switch (trackStatus){
                case "1":
                    trackStatusStr = "进行中";
                    break;
                case "2":
                    trackStatusStr = "关闭";
                    break;
                case "3":
                    trackStatusStr = "挂起";
                    break;
                default:
                    break;
            }
        }
        return trackStatusStr;
    }

    public String getIsTopStr()
    {
        if (isTop != null)
        {
            if (isTop)
            {
                return "是";
            }else if(!isTop)
            {
                return "否";
            }
        }
        return isTopStr;
    }
}
